Формы |
Форма |
<form action="check.php" name="test-form" method="post">
<table>
<caption>Форма</caption>
<tr>
<td><label for="first-name-id">Имя: </label></td>
<td><input type="text" placeholder="Name" name="first-name" id="first-name-id"></td>
</tr>
<tr>
<td><label for="sername-id">Фамилия: </label></td>
<td><input type="text" placeholder="Sername" name="sername" id="sername-id"></td>
</tr>
<tr>
<td><label for="email-id">Email: </label></td>
<td><input type="email" placeholder="Email" name="email" id="email-id"></td>
</tr>
<tr>
<td><label for="date-id">Дата: </label></td>
<td><input type="date" placeholder="Date" name="date" id="date-id"></td>
</tr>
<tr>
<td>Отправить: </td>
<td><input type="submit" value="Done" name="done"></td>
</tr>
</table>
</form>
|
action="путь к php-файлу" - файл обработки формы,
если записать action="", то обработка будет осуществляться на этой же странице
name и method - обязательные атрибуты;
post - сохраняет данные для отправки в php-файле, который указан в атрибуте action;
get - делает запрос к серверу через адресную строку браузера (?text=ключевое слово1 ключевое слово2)
submit - после нажатия делает переход на файл, указанный в action(check.php)
|
Глобальные переменные |
print_r($_POST);
print_r($_GET);
print_r($_REQUEST);
|
$_POST - хранит все переданные значения в ассоциативном массиве, имена индексов которого совпадают с атрибутами name у полей формы.
$_GET - хранит все запрашиваемые значения в ассоциативном массиве, имена индексов которого совпадают с атрибутами name у полей формы.
В них храняться все переданные значения пользователей
$_REQUEST - хранит все переданные значения и методом get и post
|
Обработка формы (check.php) |
// ВЫВОД ДАННЫХ $_POST:
print_r($_POST);
echo "<hr>";
// ВЫВОД ВВЕДЁННЫХ ДАННЫХ:
// Имя:
echo "<b>1. Ваше имя: </b>";
echo("<i>".$_POST["first-name"]."</i><br>");
// Фамилия:
echo "<b>2. Ваша фамилия: </b>";
echo("<i>".$_POST["sername"]."</i><br>");
// E-mail:
echo "<b>3. Ваш e-mail: </b>";
echo("<i>".$_POST["email"]."</i><br>");
// Дата:
echo "<b>4. Дата заполнения: </b>";
echo("<i>".$_POST["date"]."</i><br>");
// ВАЛИДАЦИЯ ФОРМЫ:
if ($_POST["first-name"] == "") {
echo "<span style=\"color: red;\">Вы не ввели своё <b>имя</b>! </span><br>";
}
if ($_POST["sername"] == "") {
echo "<span style=\"color: red;\">Вы не ввели свою <b>фамилию</b>! </span><br>";
}
if ($_POST["email"] == "") {
echo "<span style=\"color: red;\">Вы не ввели ваш <b>email</b>! </span><br>";
}
if ($_POST["date"] == "") {
echo "<span style=\"color: red;\">Вы не ввели <b>дату заполнения</b>!</span> <br>";
}
if (($_POST["first-name"] == true) &&
($_POST["sername"] == true) &&
($_POST["email"] == true) &&
($_POST["sername"] == true) &&
($_POST["date"] == true)) {
echo "<span style=\"color: green; font-size: 2em;\"><b>Вы полностью заполнили форму!</b></span>";
}
|
После нажатия на <input type="submit"> происходит перенаправление на файл check.php, и вся обработка формы будет выполненна в нём
|
Обработка формы внутри текущей страницы |
// Обработка формы будет выполнена после нажатия на
<input[type="submit"] name="done">, так работает функция isset
if (isset($_POST["done"])) {
echo "<hr> <h2>Выполнена обработка формы</h2>";
// php-код из check.php
}
|
Можно писать php-код на самом "верху" страницы.
Значение атрибута action оставить пустым (action="").
Результат выполнения php-кода будет отображён вверху страницы
|
Куки |
setcookie("num", 10, time() + 10);
$_COOKIE;
session_start();
$_SESSION;
session_destroy();
|
Куки хранятся в браузере, а Сессии на сервере |
Обработка формы |
Сохранение данных в полях формы после перезагрузки страницы |
// 1. Сохраняем значение полей формы в переменные
if (isset($_POST["done"])) {
$first_name = htmlspecialchars($_POST["fifrst-name"]);
...
// 2. Создаём сессию и сохраняем все переменные в сессию
$_SESSION["first-name"] = $first_name;
...
}
// 3. Прописываем в поля форм значения массива SESSION
<input type="text name="first-name"
value="<?php echo $_SESSION["first-name"]>"> или так:
value="<?=$_SESSION["first-name"]>">
|
|
Появление ошибки при незаполнении форм |
// 1. Создаём условие внутри основного
$error = false;
if ($first_name == "" || !preg_match("/@/", $first_name)) {
$error_first_name = "Вы не корректно указали своё имя";
$error = true;
}
// далее создаём условие для каждого поля
// 2. Создаём переменные ошибок
$error_first_name = "Вы не указали своё имя";
// 3. Вставляем спаны после полей форм
<input type="text name="first-name"
value="<?=$_SESSION["first-name"]>">
<span style="color: red;"></span>
// 4. Прописываем в него значение переменной $error
<span style="color: red;"><?=$error_first_name></span>
|
!preg_match("/@/", $first_name) - проверяет, чтобы поле не содержало спецсимволы или некорректность.
Если $error = true, то сообщение не будем отправлять
strlen - также можно указывать в условии, проверка на длину строки
|
Отправка формы |
// Создаём еще одно внутреннее условие
if (!$error) {
пишем код для отправки на почту или в базу данных
}
|
|